package com.elric.mall.service;

import com.elric.mall.dto.FileAntdDto;
import com.elric.mall.model.UmsFileInfo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 文件信息表 服务类
 *
 * @author yubaoshan
 * @date 2020/6/7 22:15
 */
public interface UmsFileInfoService {

    /**
     * 查询所有文件信息表
     *
     * @param umsFileInfo 查询参数
     * @return 文件信息列表
     * @author yubaoshan
     * @date 2020/6/7 22:15
     */
    List<UmsFileInfo> list(UmsFileInfo umsFileInfo);

    /**
     * 添加文件信息表
     *
     * @param umsFileInfo 添加参数
     * @author yubaoshan
     * @date 2020/6/7 22:15
     */
    void add(UmsFileInfo umsFileInfo);

    /**
     * 删除文件信息表
     *
     * @param fileId 删除参数
     * @author yubaoshan
     * @date 2020/6/7 22:15
     */
    void delete(String fileId);

    /**
     * 编辑文件信息表
     *
     * @param umsFileInfo 编辑参数
     * @author yubaoshan
     * @date 2020/6/7 22:15
     */
    void edit(UmsFileInfo umsFileInfo);

    /**
     * 查看详情文件信息表
     *
     * @param id 查看参数
     * @return 文件信息
     * @author yubaoshan
     * @date 2020/6/7 22:15
     */
    UmsFileInfo detail(String id);

    /**
     * 上传文件，返回文件的唯一标识
     *
     * @param file 要上传的文件
     * @return 文件id
     * @author yubaoshan
     * @date 2020/6/9 21:21
     */
    String uploadFile(MultipartFile file);

    /**
     * 获取文件信息结果集
     *
     * @param fileId 文件id
     * @return 文件信息结果集
     * @author yubaoshan
     * @date 2020/6/9 21:56
     */
    UmsFileInfo getFileInfoResult(String fileId);

    /**
     * 判断文件是否存在
     *
     * @param field 文件id
     * @author xuyuxiang
     * @date 2020/6/28 15:55
     */
    void assertFile(String field);

    /**
     * 文件预览
     *
     * @param fileId           文件id
     * @param response         响应结果
     * @author xuyuxiang
     * @date 2020/7/7 11:23
     */
    void preview(String fileId, HttpServletResponse response);

    /**
     * 文件下载
     *
     * @param fileId           文件id
     * @param response         响应结果
     * @author xuyuxiang
     * @date 2020/7/7 12:09
     */
    void download(String fileId, HttpServletResponse response);

    /**
     * 建立关联关系
     * @param id
     * @param type
     * @param fileIds
     * @return
     */
    int addRelation(String id, String type, List<String> fileIds);

    /**
     * 根据关联id查询附件列表（适配antd组件结构）
     * @param id
     * @return
     */
    List<FileAntdDto> findAntdFileById(String id);

    /**
     * 根据业务实体id解除附件关联并删除附件
     * @param id
     */
    void delFileByEntityId(String id);
}
